#include "api_localcom.h"

/**
 *****************************************************************************
 ** \brief 通讯接口初始化
 **
 ** \param 1: 波特率[2400 ~ 9600]
 ** \param 2: 发送DMA使能
 ** 
 ** \retval 无                                     
 *****************************************************************************/
void API_LocalCOM_Init(en_ComPort_CHX CHX, uint32_t baud, FunctionalState DMA_NewState, uint8_t *SRC_Buf)     
{
	 
	 if(DMA_NewState == ENABLE) //DMA的配置
	 { 
		 uint32_t TxAddr = 0;
		 if(COM1 == CHX)
		 {
			 TxAddr = COM_CH1;	
			 BSP_DMA_Init(DmaLpUart0TxTrig,SRC_Buf,TxAddr);
		 }else if(COM2 == CHX)
		 {
			 TxAddr = COM_CH2;
			 BSP_DMA_Init(DmaUart0TxTrig,SRC_Buf,TxAddr);		 
		 }
		 else if(COM3 == CHX)
		 {
			 TxAddr = COM_CH3;	
			 BSP_DMA_Init(DmaLpUart1TxTrig,SRC_Buf,TxAddr);
		 }
		 else if(COM4 == CHX)
		 {
			 TxAddr = COM_CH4;	
			 BSP_DMA_Init(DmaUart1TxTrig,SRC_Buf,TxAddr);	
		 }	 	 
	 }

 	if(CHX == COM1)
	{
		BSP_LPUARTx_Init(M0P_LPUART0, baud, LPUartEven); /*默认偶校验,应用层一般不会去修改校验位*/
	}
	else if(CHX == COM2)
	{
		BSP_UARTx_Init(M0P_UART0, baud, UartMskEven);
	}	 
	else if(CHX == COM3)
	{
		BSP_LPUARTx_Init(M0P_LPUART1, baud, LPUartEven);
	}	 
}

/**
 *****************************************************************************
 ** \brief 通讯接口写数据
 **
 ** \param 1: 通道号
 ** \param 2: SendBuff
 ** 
 ** \retval 无                                     
 *****************************************************************************/
void API_LocalCOM_Write(en_ComPort_CHX CHX, uint8_t *SendBuff, uint32_t ByteLength ,FunctionalState DMA_NewState)
{		
	/* 注意：RS485不需要处理发送接收使能*/
	/* 如果其他项目需要,代码添加到这里！*/
	
	 if(DMA_NewState == ENABLE )
	 {
		 Dma_DisableChannel(DmaCh0);               //禁用通道x
	     Dma_SetTransferCnt(DmaCh0,ByteLength);    //设置传输的个数
	     Dma_EnableChannel(DmaCh0);                //使能通道x		  
	 }
	 else
	 {
		if(CHX == COM1)
		{
			BSP_LPUARTx_SendBytes(M0P_LPUART0, ByteLength,SendBuff);
		}
		else if(CHX == COM2)
		{
			BSP_UARTx_SendBytes(M0P_UART0, ByteLength,SendBuff);
		}	 

	 }
}





